﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.DirectoryServices;

namespace AvisoSuporte
{
    public partial class PreencheDatas : Form
    {
        Model.WorkItem item;
        bool Task = false;

        public PreencheDatas(Model.WorkItem item, bool _Task)
        {
            InitializeComponent();
            this.item = item;
            this.Task = _Task;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //fecha tela
            this.Close();
            //((Principal)Owner).ticker_TFS_Tick(this, new EventArgs());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //atualização
            if(txtHorasPrevistas.Text !=string.Empty)
                item.HoursPlanned = Convert.ToDouble(txtHorasPrevistas.Text);

            if(txtDataInicio.Text !=string.Empty)
                item.StartDate = Convert.ToDateTime(txtDataInicio.Text);

            if(txtDataFim.Text != string.Empty)
                item.FinishDate = Convert.ToDateTime(txtDataFim.Text);

            if(txtInicioRealizada.Text !=string.Empty)
                item.StartDateRealized = Convert.ToDateTime(txtInicioRealizada.Text);

            if(txtFinalRealizada.Text !=string.Empty)
                item.FinishDateRealized = Convert.ToDateTime(txtFinalRealizada.Text);

            if(txtHoraRealizada.Text != string.Empty)
                item.HoursRealized = Convert.ToDouble(txtHoraRealizada.Text);

            if(chkResolverBug.Checked && rdbCentura.Checked)
            {
                item.State = "Aprovado para Teste";
            }

            if((chkResolverBug.Checked && rdbSinacor.Checked) || (chkResolverBug.Checked && rdbSite.Checked))
            {
                item.State = "Resolvido";
            }

            if (Task && chkResolverBug.Checked)
                item.State = "Fechada";

            if(cboAssignedTo.SelectedItem != null)
                item.AssignedTo = cboAssignedTo.SelectedItem.ToString();

            Communication.Geral geral = new AvisoSuporte.Communication.Geral();
            string erro = string.Empty;
            
            if(Task)
                erro = geral.AtualizaTask(item);
            else
                erro = geral.AtualizaWorkItem(item);

            if(erro != string.Empty)
            {
                MessageBox.Show(erro);
            }
            else
            {
                if(item.HoursRealized != 0)
                {
                    //envia email
                    Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
                    Microsoft.Office.Interop.Outlook.MailItem oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

                    string titulo = string.Empty;
                    string corpo = string.Empty;
                    string to = string.Empty;
                    string email_to = string.Empty;
                    string corpo_release = string.Empty;
                    string to_release = string.Empty;

                    ////verificar email Active Directory
                    DirectoryEntry entry = new DirectoryEntry("LDAP://corporate.int");
                    DirectorySearcher dSearch = new DirectorySearcher(entry);
                    dSearch.Filter = "(&(objectCategory=person)(displayName=" + cboAssignedTo.SelectedItem.ToString() + "))";
                    SearchResult result = dSearch.FindOne();
                    if(result != null)
                    {
                        email_to = result.Properties["mailnickname"][0].ToString() + "@bvmf.com.br";
                    }
                    if(item.State == "Resolvido")
                    {
                        titulo = "Bug Resolvido - Aguardando Build e Publicação";
                        corpo = "O Bug " + item.ID + " foi codificado e está aguardando a compilação automática." + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Trabalho executado:" + Environment.NewLine;
                        corpo += "Data Inicial Prevista: " + item.StartDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Final Prevista: " + item.FinishDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Previstas: " + item.HoursPlanned.ToString() + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.StartDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.FinishDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Realizadas: " + item.HoursRealized.ToString() + Environment.NewLine;
                        corpo += "Assigned To: " + item.AssignedTo.ToString() + Environment.NewLine;
                        if(item.Remedy != null)
                            corpo += "Número Remedy: " + item.Remedy.ToString() + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Equipe Suporte CDSB" + Environment.NewLine;

                        to = "p-jpontes@bvmf.com.br;p-mprudente@bvmf.com.br;p-cagoncalves@bvmf.com.br";

                        if (rdbSinacor.Checked)
                        {
                            corpo_release = "Equipe Release Manager.";
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "O Bug " + item.ID + " foi codificado e está resolvido com sua equipe." + Environment.NewLine;
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "O Bug está no nome de : " + item.AssignedTo.ToString() + Environment.NewLine;
                            if (item.Remedy != null)
                                corpo_release += "Número Remedy: " + item.Remedy.ToString() + Environment.NewLine;
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "" + Environment.NewLine;
                            corpo_release += "Equipe Suporte CDSB" + Environment.NewLine;

                            to_release = "p-mprudente@bvmf.com.br;p-cagoncalves@bvmf.com.br;p-fmoco@bvmf.com.br;p-macosta@bvmf.com.br;p-mbastos@bvmf.com.br;aberriel@bvmf.com.br;p-lcorrea@bvmf.com.br;p-jpontes@bvmf.com.br;";
                        }
                        else
                        {

                            if (chkEnviaEmailRelease.Checked)
                            {

                                corpo_release = "Equipe Release Manager.";
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "O Bug " + item.ID + " foi codificado e está aguardando a publicação no ambiente de TE." + Environment.NewLine;
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "O Bug está no nome de : " + item.AssignedTo.ToString() + Environment.NewLine;
                                if (item.Remedy != null)
                                    corpo_release += "Número Remedy: " + item.Remedy.ToString() + Environment.NewLine;
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "" + Environment.NewLine;
                                corpo_release += "Equipe Suporte CDSB" + Environment.NewLine;

                                to_release = "p-mprudente@bvmf.com.br;p-cagoncalves@bvmf.com.br;p-fmoco@bvmf.com.br;p-lcorrea@bvmf.com.br;";
                            }

                            
                            {
                                if (chkMeeting.Checked)
                                {
                                    Microsoft.Office.Interop.Outlook.AppointmentItem oTask = (Microsoft.Office.Interop.Outlook.AppointmentItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
                                    oTask.Body = corpo;
                                    oTask.Subject = "Publicação Ambiente PRODUÇÃO Bug " + item.ID;

                                    Microsoft.Office.Interop.Outlook.Recipient rec = oTask.Recipients.Add("p-cagoncalves@bvmf.com.br");
                                    rec.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec.Resolve();

                                    Microsoft.Office.Interop.Outlook.Recipient rec3 = oTask.Recipients.Add("p-jpontes@bvmf.com.br");
                                    rec3.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec3.Resolve();

                                    Microsoft.Office.Interop.Outlook.Recipient rec4 = oTask.Recipients.Add("p-mprudente@bvmf.com.br");
                                    rec4.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec4.Resolve();

                                    oTask.ReminderSet = true;
                                    oTask.Start = RetornaDataInicio();
                                    oTask.End = RetornaDataInicio().AddHours(1);
                                    
                                    oTask.MeetingStatus = Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;

                                    oTask.ResponseRequested = true;
                                    oTask.Save();
                                    oTask.Send();
                                }
                            }

                            {
                                if (chkMeeting.Checked)
                                {
                                    Microsoft.Office.Interop.Outlook.AppointmentItem oTask = (Microsoft.Office.Interop.Outlook.AppointmentItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
                                    oTask.Body = corpo;
                                    oTask.Subject = "Publicação Ambiente Bug TE " + item.ID;

                                    Microsoft.Office.Interop.Outlook.Recipient rec = oTask.Recipients.Add("p-cagoncalves@bvmf.com.br");
                                    rec.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec.Resolve();

                                    Microsoft.Office.Interop.Outlook.Recipient rec3 = oTask.Recipients.Add("p-jpontes@bvmf.com.br");
                                    rec3.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec3.Resolve();

                                    Microsoft.Office.Interop.Outlook.Recipient rec4 = oTask.Recipients.Add("p-mprudente@bvmf.com.br");
                                    rec4.Type = (int)Microsoft.Office.Interop.Outlook.OlMeetingRecipientType.olRequired;
                                    rec4.Resolve();

                                    oTask.ReminderSet = true;
                                    oTask.Start = DateTime.Now.AddDays(1);
                                    oTask.End = DateTime.Now.AddDays(1).AddHours(1);
                                    oTask.MeetingStatus = Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;

                                    oTask.ResponseRequested = true;
                                    oTask.Save();
                                    oTask.Send();
                                }
                            }
                        }
                    }
                    else if (item.State == "Fechada") 
                    {
                        titulo = "Task Finalizada - " + item.ID;
                        corpo = "A Task " + item.ID + " foi finalizada." + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Trabalho executado:" + Environment.NewLine;
                        corpo += "Data Inicial Prevista: " + item.StartDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Final Prevista: " + item.FinishDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Previstas: " + item.HoursPlanned.ToString() + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.StartDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.FinishDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Realizadas: " + item.HoursRealized.ToString() + Environment.NewLine;
                        corpo += "Assigned To: " + item.AssignedTo.ToString() + Environment.NewLine;
                        if (item.Remedy != null)
                            corpo += "Número Remedy: " + item.Remedy.ToString() + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Equipe Suporte CDSB" + Environment.NewLine;

                        to = "p-jpontes@bvmf.com.br;p-mprudente@bvmf.com.br;p-cagoncalves@bvmf.com.br";

                        if (to.IndexOf(email_to) == -1)
                            to += ";" + email_to;
                    }
                    else if(item.State != "Ativa" && item.State != "Ativo" && item.State != "Analise" && item.State != "Codificacao")
                    {
                        titulo = "Bug Aprovado para Testes - Nível 2";
                        corpo = "O Bug " + item.ID + " foi codificado e está aguardando os testes da equipe de Nível 2." + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Trabalho executado:" + Environment.NewLine;
                        corpo += "Data Inicial Prevista: " + item.StartDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Final Prevista: " + item.FinishDate.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Previstas: " + item.HoursPlanned.ToString() + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.StartDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Data Inicial Realizada: " + item.FinishDateRealized.ToString("dd/MM/yyyy HH:mm") + Environment.NewLine;
                        corpo += "Horas Realizadas: " + item.HoursRealized.ToString() + Environment.NewLine;
                        corpo += "Assigned To: " + item.AssignedTo.ToString() + Environment.NewLine;
                        if (item.Remedy != null)
                            corpo += "Número Remedy: " + item.Remedy.ToString() + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "" + Environment.NewLine;
                        corpo += "Equipe Suporte CDSB" + Environment.NewLine;

                        to = "p-jpontes@bvmf.com.br;p-mprudente@bvmf.com.br;p-cagoncalves@bvmf.com.br";

                        if (to.IndexOf(email_to) == -1)
                            to += ";" + email_to;
                    }

                    //Microsoft.Office.Interop.Outlook.MailItem eMail = (Microsoft.Office.Interop.Outlook.MailItem)
                    //  this.Application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
                    if (to != string.Empty)
                    {
                        oMsg.Subject = titulo;
                        oMsg.To = to;
                        oMsg.Body = corpo;
                        oMsg.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceNormal;
                        ((Microsoft.Office.Interop.Outlook._MailItem)oMsg).Send();
                    }

                    if(corpo_release != string.Empty)
                    {
                        oMsg = (Microsoft.Office.Interop.Outlook.MailItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
                        oMsg.Subject = titulo;
                        oMsg.To = to_release + ";" + oMsg.SenderEmailAddress;
                        oMsg.Body = corpo_release;
                        oMsg.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceNormal;
                        ((Microsoft.Office.Interop.Outlook._MailItem)oMsg).Send();
                    }
                }

                this.Close();
                ((Principal)Owner).ticker_TFS_Tick(this, new EventArgs());
            }
        }

        private DateTime RetornaDataInicio()
        {
            //data pode ser na quinta-feira (aviso na sexta-feira)
            //data pode ser na sexta-feira (aviso na segunda-feira)

            DateTime proxima = DateTime.Now;


            if(proxima.DayOfWeek == DayOfWeek.Monday && proxima.Hour <= 18)
            {
                proxima = proxima.AddDays(0);
            }
            else
            {
                proxima = proxima.AddDays(5);
            }

            while(proxima.DayOfWeek != DayOfWeek.Thursday && proxima.DayOfWeek != DayOfWeek.Friday)
            {
                proxima = proxima.AddDays(1);
            }

            return Convert.ToDateTime(proxima.ToString("dd/MM/yyyy 18:00:00"));
        }

        private void PreencheDatas_Load(object sender, EventArgs e)
        {

            this.Width = 285;

            //dados preenchidos
            if(item.StartDate != null && item.StartDate != DateTime.MinValue)
                txtDataInicio.Text = item.StartDate.ToString();
            if(item.FinishDate != null && item.FinishDate != DateTime.MinValue)
                txtDataFim.Text = item.FinishDate.ToString();

            if(item.FinishDateRealized != null && item.FinishDateRealized != DateTime.MinValue)
                txtFinalRealizada.Text = item.FinishDateRealized.ToString();
            if(item.StartDateRealized != null && item.StartDateRealized != DateTime.MinValue)
                txtInicioRealizada.Text = item.StartDateRealized.ToString();

            if(item.HoursPlanned != 0)
                txtHorasPrevistas.Text = item.HoursPlanned.ToString();

            if(item.HoursRealized != 0)
                txtHoraRealizada.Text = item.HoursRealized.ToString();

            lblCriadoPor.Text = item.CreatedBy;
            lblTecnologia.Text = item.Technology;
            lblAmbiente.Text = item.AreaPath;

            txtTitulo.Text = item.Title;
            txtDescricao.Text = item.Description.Replace("\n",Environment.NewLine);

            lblDataCriacao.Text = item.CreatedDate.ToString("dd/MM/yyyy HH:mm:ss");
            lblRemedy.Text = item.Remedy;

            if (Task)
            {
                this.Text = "Detalhes da Item - Task" + item.ID;

                //desabilita os dados
                chkResolverBug.Text = "Fechar Task";
                rdbCentura.Visible = false;
                rdbSinacor.Visible = false;
                rdbSite.Visible = false;

                //preenche a lista de pessoas com o defautl
                List<string> pessoas = new List<string>();
                pessoas.Add("Carlos Alberto Gonçalves Carvalho");
                pessoas.Add("Joao Paulo Gregório Pontes");
                pessoas.Add("Marcelo Luis Prudente do Amaral");
                
                cboAssignedTo.DataSource = null;
                cboAssignedTo.DataSource = pessoas;

                chkMeeting.Visible = false;
                chkEnviaEmailRelease.Visible = false;
            }
            else
                this.Text = "Detalhes do Item - Bug " + item.ID;

            ProcessaItem();

            //itens não rersolvidos, invisiveis
            lblMetting.Visible = false;
            lblEmailRelease.Visible = false;
            chkEnviaEmailRelease.Visible = false;
            chkMeeting.Visible = false;
        }

        private DateTime AdicionaHorasUteis(DateTime dataInicial, int horas)
        {
            DateTime aux = dataInicial;
            DateTime retorno = dataInicial;

            DateTime min = new DateTime(dataInicial.Year, dataInicial.Month, dataInicial.Day, 7, 30, 0);
            DateTime max = new DateTime(dataInicial.Year, dataInicial.Month, dataInicial.Day, 20, 0, 0);

            for(int i = 0; i < horas * 2; i++)
            {
                aux = aux.AddHours(0.5);


                if(!(aux < min || aux > max) && aux.DayOfWeek != DayOfWeek.Saturday && aux.DayOfWeek != DayOfWeek.Sunday)
                {
                    retorno = aux;
                }
                else
                {
                    while((aux <= min || aux >= max) || aux.DayOfWeek == DayOfWeek.Saturday || aux.DayOfWeek == DayOfWeek.Sunday)
                    {
                        aux = aux.AddHours(0.5);

                        if(aux.Day != max.Day)
                        {
                            max = max.AddDays(1);
                            min = min.AddDays(1);
                        }
                    }
                    retorno = aux;
                }

                if(aux.Day != max.Day)
                {
                    max = max.AddDays(1);
                    min = min.AddDays(1);
                }
            }
            return retorno;

        }

        private double RetornaHorasUteis(DateTime dataInicial, DateTime dataFinal)
        {
            DateTime aux = dataInicial;
            DateTime retorno = dataInicial;

            DateTime aux_fim = dataFinal;

            DateTime min = new DateTime(dataInicial.Year, dataInicial.Month, dataInicial.Day, 7, 30, 0);
            DateTime max = new DateTime(dataInicial.Year, dataInicial.Month, dataInicial.Day, 20, 0, 0);

            double conta = 0;
            while(aux <= aux_fim) 
            {
            
                aux = aux.AddHours(0.5);
                conta += 0.5;

                if(!(aux < min || aux > max) && aux.DayOfWeek != DayOfWeek.Saturday && aux.DayOfWeek != DayOfWeek.Sunday)
                {
                    retorno = aux;
                }
                else
                {
                    while((aux <= min || aux >= max) || aux.DayOfWeek == DayOfWeek.Saturday || aux.DayOfWeek == DayOfWeek.Sunday)
                    {
                        aux = aux.AddHours(0.5);

                        if(aux.Day != max.Day)
                        {
                            max = max.AddDays(1);
                            min = min.AddDays(1);
                        }
                    }
                    retorno = aux;
                }

                if(aux.Day != max.Day)
                {
                    max = max.AddDays(1);
                    min = min.AddDays(1);
                }
            }
            conta -= 0.5;
            return conta;

        }

        private void ProcessaItem()
        {
            DateTime dtInicio = DateTime.Now;

            if(txtDataInicio.Text == string.Empty)
            {
                if(dtInicio.Minute > 30)
                    txtDataInicio.Text = dtInicio.AddMinutes(30).ToString("dd/MM/yyyy HH:00:00");
                else
                    txtDataInicio.Text = dtInicio.AddMinutes(30).ToString("dd/MM/yyyy HH:30:00");
            }

            dtInicio = Convert.ToDateTime(txtDataInicio.Text);

            if(txtDataFim.Text == string.Empty)
            {
                DateTime dataFim = AdicionaHorasUteis(dtInicio, ConverteParaHoras(item.Rank));
                txtDataFim.Text = dataFim.ToString();
                txtHorasPrevistas.Text = ConverteParaHoras(item.Rank).ToString();
            }
        }

        private int ConverteParaHoras(string valor)
        {
            if(valor.Trim() == "Imediato")
                return 8;
            else if(valor.Trim() == "Urgente")
                return 12;
            else if(valor.Trim() == "Alta")
                return 16;
            else if(valor.Trim() == "Normal")
                return 24;
            else if(valor.Trim() == "Baixa")
                return 36;

            return 0;
        }

        private void chkResolverBug_CheckedChanged(object sender, EventArgs e)
        {
            
        }

        private void rdbSite_CheckedChanged(object sender, EventArgs e)
        {
            if(rdbSite.Checked)
            {
                //itens não rersolvidos, invisiveis
                lblMetting.Visible = true;
                lblEmailRelease.Visible = true;
                chkEnviaEmailRelease.Visible = true;
                chkMeeting.Visible = true;


                List<string> pessoas = new List<string>();
                if(chkResolverBug.Checked)
                {
                    pessoas.Add("Fabricio Henrique Romano Moco");
                    pessoas.Add("--------------------------------------------");
                }
                pessoas.Add("Carlos Alberto Gonçalves Carvalho");
                pessoas.Add("Joao Paulo Gregório Pontes");
                pessoas.Add("Marcelo Luis Prudente do Amaral");

                cboAssignedTo.DataSource = null;
                cboAssignedTo.DataSource = pessoas;
            }
        }

        private void rdbSinacor_CheckedChanged(object sender, EventArgs e)
        {
            
            if(rdbSinacor.Checked)
            {

                //itens não rersolvidos, invisiveis
                lblMetting.Visible = false;
                lblEmailRelease.Visible = false;
                chkEnviaEmailRelease.Visible = false;
                chkMeeting.Visible = false;

                List<string> pessoas = new List<string>();
                if(chkResolverBug.Checked)
                {
                    pessoas.Add("Artur Fernandes Berriel");
                    pessoas.Add("Luciano Correa");
                    pessoas.Add("Marcela Lucia Teixeira da Costa");
                    pessoas.Add("Fabricio Henrique Romano Moco");
                    pessoas.Add("Mauricio Bastos");
                    pessoas.Add("--------------------------------------------");
                }
                
                pessoas.Add("Carlos Alberto Gonçalves Carvalho");
                pessoas.Add("Joao Paulo Gregório Pontes");
                pessoas.Add("Marcelo Luis Prudente do Amaral");
                
                cboAssignedTo.DataSource = null;
                cboAssignedTo.DataSource = pessoas;
            }
        }

        private void txtInicioRealizada_Leave(object sender, EventArgs e)
        {
            DatasRealizadas();
        }

        private void DatasRealizadas()
        {
            if(txtInicioRealizada.Text != string.Empty && txtFinalRealizada.Text != string.Empty)
            {

                DateTime dtInicio = Convert.ToDateTime(txtInicioRealizada.Text);
                
                DateTime dtFim = Convert.ToDateTime(txtFinalRealizada.Text);

                txtHoraRealizada.Text = RetornaHorasUteis(dtInicio, dtFim).ToString();
            }
        }

        private void txtFinalRealizada_Leave(object sender, EventArgs e)
        {
            DatasRealizadas();
        }

        private void rdbCentura_CheckedChanged(object sender, EventArgs e)
        {
            if(rdbCentura.Checked)
            {
                //itens não rersolvidos, invisiveis
                lblMetting.Visible = false;
                lblEmailRelease.Visible = false;
                chkEnviaEmailRelease.Visible = false;
                chkMeeting.Visible = false;

                List<string> pessoas = new List<string>();
                if(chkResolverBug.Checked)
                {
                    pessoas.Add(item.CreatedBy);
                    pessoas.Add("--------------------------------------------");
                }

                pessoas.Add("Carlos Alberto Gonçalves Carvalho");
                pessoas.Add("Joao Paulo Gregório Pontes");
                pessoas.Add("Marcelo Luis Prudente do Amaral");
                
                cboAssignedTo.DataSource = null;
                cboAssignedTo.DataSource = pessoas;
            }
        }

        private void lnkMais_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Width = 677;
            lnkMais.Visible = false;
        }

        private void lnkMenos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            this.Width = 285;
            this.lnkMais.Visible = true;
        }

        private void txtDataInicio_Leave(object sender, EventArgs e)
        {
            DatasPrevistas();
        }

        private void txtDataFim_Leave(object sender, EventArgs e)
        {
            DatasPrevistas();
        }

        private void DatasPrevistas()
        {
            if(txtDataInicio.Text != string.Empty && txtDataFim.Text != string.Empty)
            {

                DateTime dtInicio = Convert.ToDateTime(txtDataInicio.Text);

                DateTime dtFim = Convert.ToDateTime(txtDataFim.Text);

                txtHorasPrevistas.Text = RetornaHorasUteis(dtInicio, dtFim).ToString();
            }
        }
    }
}
